<?php
include_once 'fns_db.php';
include_once 'output_html.php';
include_once 'other.php';
include_once 'const.php';

/**
 * Получает 2-хмерный массив и нумерует нулевые элементы его подмассивов от 1 до размер массива
 * @param type $array
 */
function numeric_array0(&$array){
    $size=count($array);
    for ($i=0;$i<$size;$i++) {
        $array[$i][0]=$i+1;
    }    
}

/**
 * функциия по извлечению данных из БД в виде 2-х мерного массива
 * @param type $query запрос к БД
 * @return boolean (2-х мерный массив), либо FALSE в случае неудачи. 
 */
function get_data_from_table($query) {
    $conn=db_connect();
    $conn->query('SET NAMES utf8');
    $result=$conn->query($query);
    if (!$result) return FALSE;
    $i=0;
    $j=0;
    if (!$result->num_rows) return FALSE;
    $data=array();
    while ($row=$result->fetch_assoc()){
        foreach ($row as $key => $value) {
            $data[$i][$j]=$value;
            $j++;
        }
        $i++;
        $j=0;
    } 
    return $data;    
}


/**
 * функциия по извлечению данных из БД в виде 2-х мерного ассоциативного массива
 * @param type $query запрос к БД
 * @return boolean (2-х мерный массив), либо FALSE в случае неудачи. 
 */
function get_data_from_table_assoc($query) {
    $conn=db_connect();
    $conn->query('SET NAMES utf8');
    $result=$conn->query($query);
    if (!$result) return FALSE;
    $i=0;
    $j=0;
    if (!$result->num_rows) return FALSE;
    $data=array();
    while ($row=$result->fetch_assoc()){
        foreach ($row as $key => $value) {
            $data[$i][$key]=$value;
            $j++;
        }
        $i++;
        $j=0;
    } 
    return $data;    
}



/**
 * функция по форматированию данных в виде таблицы
 * @param type $header массив заголовков таблицы
 * @param type $data данные таблицы
 */
function format_table($header,$data) {
 
    echo '<table class="table table-striped">';
    echo '<thead><tr>';
    $size_arr=count($header);
    for ($i=0;$i<$size_arr;$i++){
        echo '<th>'.$header[$i].'</th>';
    }
    echo '</tr></thead>';
    echo '<tbody>'; 
    $size_arr=count($data);
    $size_arr1=count($data[0]);
    for ($i=0;$i<$size_arr;$i++){
        echo '<tr>';
        for ($j=0;$j<$size_arr1;$j++){
            echo '<td>'.$data[$i][$j].'</td>';
        }
        echo '</tr>';
    }    
    echo '</tbody>';
    echo '</table>';    
}

/**
 * функция по форматированию данных в виде таблицы
 * @param type $header массив заголовков таблицы
 * @param type $data данные таблицы
 */
function format_table_str($header,$data) {
    $str='';
    $str.='<table class="table table-striped">';
    $str.='<thead><tr>';
    $size_arr=count($header);
    for ($i=0;$i<$size_arr;$i++){
        $str.='<th>'.$header[$i].'</th>';
    }
    $str.='</tr></thead>';
    $str.='<tbody>'; 
    $size_arr=count($data);
    $size_arr1=count($data[0]);
    for ($i=0;$i<$size_arr;$i++){
        $str.='<tr>';
        for ($j=0;$j<$size_arr1;$j++){
            $str.='<td>'.$data[$i][$j].'</td>';
        }
        $str.='</tr>';
    }    
    $str.='</tbody>';
    $str.='</table>';  
    return $str;
}


/**
 * функция по форматированию данных в виде таблицы
 * @param type $header массив заголовков таблицы
 * @param type $data данные таблицы
 */
function format_table_str_assoc($header,$data) {
    $str='';
    $str.='<table class="table table-striped">';
    $str.='<thead><tr>';
    $size_arr=count($header);
    for ($i=0;$i<$size_arr;$i++){
        $str.='<th>'.$header[$i].'</th>';
    }
    $str.='</tr></thead>';
    $str.='<tbody>'; 
    $size_arr=count($data);
    $size_arr1=count($data[0]);
    for ($i=0;$i<$size_arr;$i++){
        $str.='<tr>';
        /*for ($j=0;$j<$size_arr1;$j++){
            $str.='<td>'.$data[$i][$j].'</td>';
        }*/
        foreach ($data[$i] as $key => $value) {
            $str.='<td>'.$data[$i][$key].'</td>';
        }
        $str.='</tr>';
    }    
    $str.='</tbody>';
    $str.='</table>';  
    return $str;
}

/**
 * функция по форматированию данных в виде таблицы
 * @param type $header массив заголовков таблицы
 * @param type $data данные таблицы
 */
function format_table_str_assoc_emp_tel($header,$data) {
    $str='';
    $str.='<table class="table table-striped">';
    $str.='<thead><tr>';
    $size_arr=count($header);
    for ($i=0;$i<$size_arr;$i++){
        $str.='<th>'.$header[$i].'</th>';
    }
    $str.='</tr></thead>';
    $str.='<tbody>'; 
    $size_arr=count($data);
    $size_arr1=count($data[0]);
    $j=0;
    for ($i=0;$i<$size_arr;$i++){
        $str.='<tr>';
        /*for ($j=0;$j<$size_arr1;$j++){
            $str.='<td>'.$data[$i][$j].'</td>';
        }*/
        foreach ($data[$i] as $key => $value) {
            if ($key!='id')
                $str.='<td class="class'.$key.'">'.$data[$i][$key].'</td>';
            $j++;
        }
        $j=0;
        $str.='</tr>';
    }    
    $str.='</tbody>';
    $str.='</table>';  
    return $str;
}

function format_privat_card($array) {
    $str='<h4>Карточка сотрудника</h4>';
    $str.='<table class="table table-striped">';
    $str.='<tbody>';    
    $str.='<tr>';
    $str.="<td><h4>Сотрудник</h4></td><td>{$array[0]['emp']}</td>";
    $str.='</tr>';
    $str.='<tr>';
    $str.="<td><h4>Телефон</h4></td><td>{$array[0]['number']}</td>";
    $str.='</tr>';
    $str.='<tr>';    
    $str.="<td><h4>Организация</h4></td><td>{$array[0]['org']}</td>";
    $str.='</tr>';
    $str.='<tr>';    
    $str.="<td><h4>Подразделение</h4></td><td>{$array[0]['dep']}</td>";
    $str.='</tr>';
    $str.='<tr>';    
    $str.="<td><h4>Должность</h4></td><td>{$array[0]['post']}</td>";
    $str.='</tr>';    
    $str.='</tbody>';
    $str.='</table>'; 
    return $str;
}

function add_link_org(&$array){
    $size_a=count($array);
    for ($i=0;$i<$size_a;$i++) {
        $array[$i][1]='<a href="index.php?org='.$array[$i][0].'&dep=0">'.$array[$i][1].'</a>';
    }
}

function add_link_dep(&$array,$id_org_active){
    $size_a=count($array);
    for ($i=0;$i<$size_a;$i++) {
        $array[$i][1]='<a href="index.php?org='.$id_org_active.'&dep='.$array[$i][0].'">'.$array[$i][1].'</a>';
    }
}

function display__user(&$array,$id_active){
    if (!is_array($array)) return FALSE;
    ?>
    <div class="row">
        <div class="span8 offset2"> 
<?php
    echo '<div id=""><ul class="nav nav-pills">';
    $size_a=count($array);

    for ($i=0;$i<$size_a;$i++) {
        if ($array[$i][0]==$id_active) {
            echo '<li class="active current">'.$array[$i][1].'</li>';
            continue;
        }
        echo '<li>'.$array[$i][1].'</li>';
    } 
    echo '</ul></div>';
?>
        </div>
    </div>
<?php

}

function display_org_user(&$array,$id_active){
    if (!is_array($array)) return FALSE;
    ?>
    <div class="row">
        <div class="span8 offset2"> 
<?php
    echo '<div id=""><ul class="nav nav-pills">';
    $size_a=count($array);

    for ($i=0;$i<$size_a;$i++) {
        if ($array[$i][0]==$id_active) {
            echo '<li class="active current">'.$array[$i][1].'</li>';
            continue;
        }
        echo '<li>'.$array[$i][1].'</li>';
    } 
    echo '</ul></div>';
?>
        </div>
    </div>
<?php

}


function add_elem_all(&$array) {
   $array1[0][0]=0;
   $array1[0][1]='Все';
   $size_a=  count($array);
   for ($i=0;$i<$size_a;$i++) $array1[$i+1]=$array[$i];
   $array=$array1;
}

function org($org_active,$ip=NULL) {
   $array=get_all_org();
   if (is_array($array)) {
?>
    <div class="row">
        <div class="span8 offset2"> 
<?php       
       echo '<h4>Организации:</h4>';
?>
        </div>
    </div>
<?php       
   }
   
   add_elem_all($array);
   add_link_org($array);
   display__user($array, $org_active);
}

function pb_org($org_active,$ip=NULL) {
    $array=get_all_org();
    add_elem_all($array);
    add_link_org($array);
    
    $str='';
    if (!is_array($array)) return $str='Нет организаций';
    $str.='<div id=""><ul class="nav nav-pills nav-stacked">';
    $size_a=count($array);

    for ($i=0;$i<$size_a;$i++) {
        if ($array[$i][0]==$org_active) {
            $str.='<li class="active current">'.$array[$i][1].'</li>';
            continue;
        }
        $str.='<li>'.$array[$i][1].'</li>';
    } 
    $str.='</ul></div>'; 
    return $str;
    
}

function dep($id_org_active,$id_dep){
    $array= get_dep_org($id_org_active);
    if ($id_org_active!=0 && is_array($array)) { 
        //if (count($array)>1) add_elem_all($array);
        if (is_array($array)) {
            ?>
                <div class="row">
                    <div class="span8 offset2"> 
            <?php       
                   echo '<h4>Подразделения:</h4>';
            ?>
                    </div>
                </div>
            <?php 
        }
        add_elem_all($array);
        add_link_dep($array, $id_org_active);
    }
    display__user($array, $id_dep);
}

function pb_dep($id_org_active,$id_dep,$tel) {
    $array= get_dep_org($id_org_active);
    $str='';
    if (count($array)<=1) return NULL;
    if ($id_org_active!=0 && is_array($array)) { 
        //if (count($array)>1) add_elem_all($array);
        if (is_array($array)) {       
            if (!empty($tel) && $id_dep!=0) {
                $dep=get_dep($id_dep);
                $str.='<h4>Подразделения: (Тел. '.$dep[0][1].' '.$tel.')</h4>';
            }
            else $str.='<h4>Подразделения:</h4>';
        }
        add_elem_all($array);
        add_link_dep($array, $id_org_active);
    }
    if (!is_array($array)) return $str='';
    $str.='<div id=""><ul class="nav nav-pills">';
    $size_a=count($array);

    for ($i=0;$i<$size_a;$i++) {
        if ($array[$i][0]==$id_dep) {
            $str.='<li class="active current">'.$array[$i][1].'</li>';
            continue;
        }
        $str.='<li>'.$array[$i][1].'</li>';
    } 
    $str.='</ul></div>';
    return $str;
}

function emp($id_dep,$id_org) {
    $array= get_emp_tel_w_dep($id_dep,$id_org);
?>
    <div class="row">
        <div class="span8 offset2"> 
<?php    
    if (is_array($array)) {
        format_table(NULL, $array);
    } else {
        echo '<div class="alert alert-block">Телефонов не зарегистрировано</div>';
    }
?>
        </div>
    </div>
<?php    
}

/**
 * Функция проверяет есть ли значение $val в массиве $array и если есть, 
 * то возвращает его ($i), иначе возвращает FALSE;
 * @param type $val
 * @param type $array
 * @return boolean
 */
function search_arr_assoc($val, &$array) {
    if (!is_array($array)) return FALSE;
    $size=count($array);
    $size1=count($array[0]);
    $m=0;
    for ($i=0;$i<$size; $i++) {
        //for ($j=0;$j<$size1;$j++) {
            if ($val==$array[$i][id]) {
                $m++;
                return $i;
            }
        //}        
    }
    return FALSE;
}

/**
 * Функция модифицирует массив с сотрудниками и телефонами так, что
 * если у сотрудника 2 номера, то они записываются через запятую
 * в одном столбце
 * @param type $array
 * @return string
 */
function modify_emp_tel_array($array){
    $size=count($array);
    $size1=count($array[0]);
    $res_array=array();
    $k=0;
    for ($i=0;$i<$size;$i++){
        $s=search_arr_assoc($array[$i]['id'], $res_array);
        if ($s===FALSE) { //Если в новом массиве
            //нет совпадений с текущим значением id, тогда мы помещаяем этот элемент в 
            //новый массив
            $res_array[$k]=$array[$i];
            $k++;
        } else $res_array[$s]['number']=$res_array[$s]['number'].',<br /> '.$array[$i]['number'];// а если
        //совпадение было, тогда дописываем к нему номер
    }
    return $res_array;
}

function pb_emp($id_dep,$id_org,$let=NULL) {
    $array= get_emp_tel_w_dep($id_dep,$id_org,$let);
    $str='';
    if (is_array($array)) {
        $res_array=modify_emp_tel_array($array);
        $str=format_table_str_assoc_emp_tel(NULL, $res_array);
    } else {
        $str='<div class="alert alert-block">Телефонов не зарегистрировано</div>';
    }
    return $str;
}

function privat_card_emp($id_emp) {
    $array=get_info_emp_by_id($id_emp);
    $str='';
    if (is_array($array)) {
        $res_array=modify_emp_tel_array($array);
        $str=format_privat_card($res_array);
    } else {
        $str='<div class="alert alert-block">Нет такого сотрудника</div>';
    }
    return $str;    
}



function rus2translit($string) {
    $converter = array(
        'а' => 'a',   'б' => 'b',   'в' => 'v',
        'г' => 'g',   'д' => 'd',   'е' => 'e',
        'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
        'и' => 'i',   'й' => 'y',   'к' => 'k',
        'л' => 'l',   'м' => 'm',   'н' => 'n',
        'о' => 'o',   'п' => 'p',   'р' => 'r',
        'с' => 's',   'т' => 't',   'у' => 'u',
        'ф' => 'f',   'х' => 'h',   'ц' => 'c',
        'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
        'ь' => '',    'ы' => 'y',   'ъ' => '',
        'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
        
        'А' => 'A',   'Б' => 'B',   'В' => 'V',
        'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
        'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
        'И' => 'I',   'Й' => 'Y',   'К' => 'K',
        'Л' => 'L',   'М' => 'M',   'Н' => 'N',
        'О' => 'O',   'П' => 'P',   'Р' => 'R',
        'С' => 'S',   'Т' => 'T',   'У' => 'U',
        'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
        'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
        'Ь' => '',    'Ы' => 'Y',   'Ъ' => '',
        'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    );
    return strtr($string, $converter);
}
function strtrans($str) {
    // переводим в транслит
    $str = rus2translit($str);
    // в нижний регистр
    //$str = strtolower($str);
    // заменям все ненужное нам на "-"
    //$str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
    // удаляем начальные и конечные '-'
    $str = trim($str);
    return $str;
}

/**
 * Функция для преобразования Фамилии Имени Отчества в Фамилию И.О.
 * @param type $str
 * @return string
 */
function fio2shortfio($str){
    $pos=strpos($str, " ");
    if (empty($pos)) return $str;
    $res_str=substr($str,0, $pos);
    $res_str.=' '.$str[$pos+1].'.';
    $pos2=strpos($str," ",$pos+1);
    if (empty($pos2)) return $res_str;
    $res_str.=$str[$pos2+1].'.';
    return $res_str;
}

?>